/*
 * @Description: 公共方法
 * @Version: @1.0.0
 * @Autor: LuLu
 * @Date: 2021-08-31 17:10:08
 * @LastEditors: LuLu
 * @LastEditTime: 2022-10-19 10:21:03
 */
export default {
  install(Vue) {
    /**
     * 判断值是否为空
     * @param {*} val
     */
    Vue.prototype.isEmpty = (val) => {
      if ("" == val || undefined == val || null == val) {
        return true;
      }
      return false;
    };
    /**
     * 格式化时间 将时间格式数据转为  => 2021-08-31
     * @param {*} time
    */
    Vue.prototype.FormatDate = (time) => {
      if ("" == time || undefined == time || null == time) {
        return "";
      }
      var date = new Date(time);
      var Y = date.getFullYear();
      var m = date.getMonth() + 1;
      if (m < 10) {
        m = "0" + m;
      }
      var d = date.getDate();
      if (d < 10) {
        d = "0" + d;
      }
      var h = date.getHours();
      if (h < 10) {
        h = "0" + h;
      }
      var i = date.getMinutes();
      if (i < 10) {
        i = "0" + i;
      }
      var s = date.getSeconds();
      if (s < 10) {
        s = "0" + s;
      }
      // return Y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s;
      return Y + '-' + m + '-' + d ;
    };
    /**
     * 格式化时间 将时间格式数据转为  => 2021-08-31 11:58:23
     * @param {*} time
     */
    Vue.prototype.FormatTime = (time) => {
      if ("" == time || undefined == time || null == time) {
        return "";
      }
      var date = new Date(time);
      var Y = date.getFullYear();
      var m = date.getMonth() + 1;
      if (m < 10) {
        m = "0" + m;
      }
      var d = date.getDate();
      if (d < 10) {
        d = "0" + d;
      }
      var h = date.getHours();
      if (h < 10) {
        h = "0" + h;
      }
      var i = date.getMinutes();
      if (i < 10) {
        i = "0" + i;
      }
      var s = date.getSeconds();
      if (s < 10) {
        s = "0" + s;
      }
      // return Y + '-' + m + '-' + d + '  ' + h + ':' + i + ':' + s;
      return Y + '-' + m + '-' + d ;
    };
    /**
     * 获取文件后缀名
     */
    Vue.prototype.Extname = (filename) => {
      if (!filename || typeof filename != 'string') {
        return false
      }
      let a = filename.split('').reverse().join('');
      let b = a.substring(0, a.search(/\./)).split('').reverse().join('');
      return b
    };
    /**
     * 获取文件流类型
     */
    Vue.prototype.matchType = (fileUrl) => {
      if (!fileUrl || typeof fileUrl != 'string') {
        return false
      }
      let a = fileUrl.split('').reverse().join('');
      let b = a.substring(0, a.search(/\./)).split('').reverse().join('');
      let fileType = '';
      switch (b) {
        case 'xls':
          fileType = 'application/vnd.ms-excel';
          break;
        case 'xlsx':
          fileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
          break;
        case 'doc':
          fileType = 'application/msword';
          break;
        case 'docx':
          fileType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
          break;
        case 'pdf':
          fileType = 'application/pdf';
          break;
        case 'ppt':
          fileType = 'application/vnd.ms-powerpoint';
          break;
        case 'pptx':
          fileType = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
          break;
        case 'png':
          fileType = 'image/png';
          break;
        case 'gif':
          fileType = 'image/gif';
          break;
        case 'jpeg':
          fileType = 'image/jpeg';
          break;
        case 'jpg':
          fileType = 'image/jpeg';
          break;
        case 'mp3':
          fileType = 'audio/mpeg';
          break;
        case 'mp4':
          fileType = 'video/mpeg';
          break;
        case 'rar':
          fileType = 'application/x-rar-compressed';
          break;
        case 'txt':
          fileType = 'text/plain';
          break;
        case 'zip':
          fileType = 'application/zip';
          break;
        case '7z':
          fileType = 'application/x-7z-compressed';
          break;
        case 'xlsx':
          fileType = 'application/vnd.ms-excel'
          break;
        case 'doc':
          fileType = 'application/msword';
          break;
        case 'docx':
          fileType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
          break;
        case 'pdf':
          fileType = 'application/pdf';
          break;
        case 'ppt':
          fileType = 'application/vnd.ms-powerpoint';
          break;
        case 'pptx':
          fileType = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
          break;
        case 'png':
          fileType = 'image/png';
          break;
        case 'gif':
          fileType = 'image/gif';
          break;
        case 'jpeg':
          fileType = 'image/jpeg';
          break;
        case 'jpg':
          fileType = 'image/jpeg';
          break;

        default:
          fileType = 'application/msword';
          break;
      }
      return fileType
      // if(b = '.xls'){
      //   fileType = 'application/vnd.ms-excel'
      // }else


    }
    /**
     * 秒转化天时分秒
     * @param value
     * @returns {string}
     */
    Vue.prototype.formatSeconds = (value) => {
      var secondTime = parseInt(value) // 秒
      var minuteTime = 0 // 分
      var hourTime = 0 // 小时
      var dayTime = 0 // 天
      var result = ''
      if (value < 60) {
        result = secondTime + '秒'
      } else {
        if (secondTime >= 60) { // 如果秒数大于60，将秒数转换成整数
          // 获取分钟，除以60取整数，得到整数分钟
          minuteTime = parseInt(secondTime / 60)
          // 获取秒数，秒数取佘，得到整数秒数
          secondTime = parseInt(secondTime % 60)
          // 如果分钟大于60，将分钟转换成小时
          if (minuteTime >= 60) {
            // 获取小时，获取分钟除以60，得到整数小时
            hourTime = parseInt(minuteTime / 60)
            // 获取小时后取佘的分，获取分钟除以60取佘的分
            minuteTime = parseInt(minuteTime % 60)
            if (hourTime >= 24) {
              // 获取天数， 获取小时除以24，得到整数天
              dayTime = parseInt(hourTime / 24)
              // 获取小时后取余小时，获取分钟除以24取余的分；
              hourTime = parseInt(hourTime % 24)
            }
          }
        }
        if (secondTime > 0) {
          secondTime = parseInt(secondTime) >= 10 ? secondTime : '0' + secondTime
          result = '' + secondTime + '秒'
        }
        if (minuteTime > 0) {
          minuteTime = parseInt(minuteTime) >= 10 ? minuteTime : '0' + minuteTime
          result = '' + minuteTime + '分' + result
        }
        if (hourTime > 0) {
          result = '' + parseInt(hourTime) + '小时' + result
        }
        if (dayTime > 0) {
          result = '' + parseInt(dayTime) + '天' + result
        }
      }
      return result
    }
    /**
     * 获取文件名后缀
     */
    Vue.prototype.matchTypeSuffix = (fileUrl) => {
      //取到文件名开始到最后一个点的长度
      let fileName = fileUrl.lastIndexOf(".");
      let fileNameLength = fileUrl.length;//取到文件名长度
      let fileFormat = fileUrl.substring(fileName + 1, fileNameLength);//截
      return fileFormat
    }
    /**
     * 保留小数位m 转化 KM
     * @param {*} value 
     * @param {*} number 
     */
    Vue.prototype.NumToFixed = (value) => {
      let result = '';
      value = parseFloat(value) / 1000;
      result = value.toFixed(2);
      return result
    }
    /**
     * 工作台
     * @param {}} value 
     */
    Vue.prototype.toFixed = (value) => {
      let result = '';
      value = parseFloat(value) / 10000;
      result = value.toFixed(2);
      return result
    }
    /**  
     * 乘法运算，避免数据相乘小数点后产生多位数和计算精度损失。  
     *  
     * @param num1被乘数 | num2乘数  
     */
    Vue.prototype.numMulti = (num1, num2) => {
      if (num1 == null) {
        num1 = 0;
      }
      var baseNum = 0;
      try {
        baseNum += num1.toString().split(".")[1].length;
      } catch (e) {
      }
      try {
        baseNum += num2.toString().split(".")[1].length;
      } catch (e) {
      }
      return Number(num1.toString().replace(".", ""))
        * Number(num2.toString().replace(".", ""))
        / Math.pow(10, baseNum);
    }
    /*
  * @description    根据某个字段实现对json数组的排序
      * @param   array  要排序的json数组对象
      * @param   field  排序字段（此参数必须为字符串）
      * @param   reverse 是否倒序（默认为false）
      * @return  array  返回排序后的json数组
  */
    Vue.prototype.jsonSort = (array, field, reverse) => {
      //数组长度小于2 或 没有指定排序字段 或 不是json格式数据
      if (array.length < 2 || !field || typeof array[0] !== "object") return array;
      //数字类型排序
      if (typeof array[0][field] === "number") {
        array.sort(function (x, y) { return x[field] - y[field] });
      }
      //字符串类型排序
      if (typeof array[0][field] === "string") {
        array.sort(function (x, y) { return x[field].localeCompare(y[field]) });
      }
      //倒序
      if (reverse) {
        array.reverse();
      }
      return array;
    };



  }


}
